C++中STL模板中set的用法总结 |
您所在的位置:网站首页 › set out用法总结 › C++中STL模板中set的用法总结 |
本文从一名大学生新生的角度出发,简单总结了C++中STL模板set的用法,希望可以帮到任何看到这篇文章的人。 目录 前言 一、set是什么? 二、set的简单介绍与特性说明 1.简单理解的原理 2.一些其他需要留意的特性 三、set的用法 1.set的构造函数 2.set的begin()与end()函数 3.set的遍历 ①正序遍历 ②逆序遍历 4.set的插入元素的函数 ①.set中的insert()函数 ②set中的emplace()函数 5.set的删除erase()函数 ①.删除对应元素 ②.删除迭代器对应的元素 ③.删除两个迭代器范围内的所有元素 ④清空set 6.查找元素是否存在与位置 ①find()函数 ②count()函数 ③查找大于等于和严格大于某值的元素(lower_bound()与upper_bound()函数) ④兼得lower_bound与upper_bound的函数equal_range() 7.其他函数(empty()和size()) 总结与后文 前言作者的身份是一名普通的大一计科学生,对于cpp的理解浅薄,还请批评指出。 可能这篇文章更适用于初高中的oier~重在如何使用而非严谨的底层原理 一、set是什么?其实set翻译过来就是集合,在高中数学我们知道集合具有互异性,也就是同一个元素只会出现一次。 同样的,set 作为c++中STL容器,它的最大特点就是具有互异性,我们一般可以用来快速判断某个元素是否存在。 二、set的简单介绍与特性说明 1.简单理解的原理set正式名字叫做关联容器,它的关联性在于它内部是用红黑树对所有元素排序的 Stop!这里因此就有一个特性:set是默认按升序顺序排序好的 一般来说树结构存在形式,其中key用于排序,value为其值,只是在set中value与key 值是一样的,但它仍然属于关联容器 在这里,我们都假设我们声明的set的变量名为P 1.set的构造函数共有三种方式 ①直接创建不带参数 setVariable_nameeg: setP②通过花括号传入初始值 setVariable_name{x1,x2,x3,……,xn}eg1. setP{2,3}eg2. setP{"LHP","YYT"}③从另外一个set中拷贝元素 set st{"good", "bad", "medium"}; set st2(st);在定义set时,我们可以通过传入元素排序规则(set中的第二个参数)来改变排序方式,比如 set st{"good", "bad", "medium"};在这里greater代表字典序更大的排在前面,我们没传入此参数遍历结果为"bad","good","medium" 而传入了greater规则后结果则为"medium","good","bad". 一种值得一提的构造方式是将STL中的pair与set一同结合起来使用 setP这样我们便可以判定一对值是否存在于set中(经常可用于判断一个坐标是否已经经过) 注意插入时我们用到make_pair()语句 Set_Name.insert(make_pair(x,y)) 2.set的begin()与end()函数要讲这个就得先讲迭代器 set::iterator it; set::iterator it;我们可以简单的将迭代器暂时理解为指针 也因为如此理解,*it代表对应地址的值,因此采用这种方法访问元素 P.begin()返回第一个元素的迭代器 P.end()返回最后一个元素下一个位置的迭代器 3.set的遍历 ①正序遍历因此,想要遍历P,则可以如此写 set::iterator it; for(it=P.begin();it!=P.end();it++){ cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |